#include <algorithm>
#include <cstdio>
#include <cstring>
#include <tuple>
#include <vector>
constexpr int MaxN = 5e2 + 5;
int n, m;
int a[MaxN];
int b[MaxN];
bool choose[MaxN];
double solve()
{
    std::vector<std::tuple<int, int>> v;
    int max = 0;
    for (int i = 1; i <= n; i++)
    {
        if (choose[i])
        {
            v.push_back({a[i], b[i]});
            max += b[i] != -1 ? 1 : 0;
        }
    }
    sort(v.begin(), v.end(), [](const std::tuple<int, int> &x, const std::tuple<int, int> &y) -> bool {
        return std::get<1>(x) < std::get<1>(y) || (std::get<1>(x) != -1 && std::get<1>(y) == -1);
    });
    double res = 1e18;
    for (int i = 0; i <= max; i++)
    {
        double temp = 0;
        double sum = 0;
        int cnt = i;
        for (auto _ : v)
        {
            int x, y;
            std::tie(x, y) = _;
            if (cnt >= 1 && y != -1)
            {
                temp += double(y) / (i - cnt + 1);
                cnt--;
            }
            else
            {
                sum += x;
            }
        }
        temp += sum / (i + 1);
        res = std::min(res, temp);
    }
    return res;
}
int main()
{
    freopen("talk.in", "r", stdin);
    freopen("talk.out", "w", stdout);
    bool ck1, ck2;
    ck1 = ck2 = true;
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= n; i++)
    {
        scanf("%d%d", &a[i], &b[i]);
        ck1 &= b[i] == -1;
        ck2 &= a[i] == b[i] || b[i] == -1;
    }
    ck1 = ck2 = false;
    if (ck1)
    {
        std::sort(a + 1, a + 1 + n);
        double answer = 0;
        for (int i = 1; i <= m; i++)
        {
            answer += a[i];
        }
        printf("%0.16lf\n", answer);
    }
    else if (ck2)
    {
        printf("I don't know.\n");
    }
    else if (n <= 20)
    {
        double answer = 1e18;
        for (int j = 0; j < (1 << n); j++)
        {
            int cnt = 0;
            for (int i = 1; i <= n; i++)
            {
                cnt += (j >> (i - 1)) & 1 ? 1 : 0;
                choose[i] = (j >> (i - 1)) & 1;
            }
            if (cnt >= m)
            {
                answer = std::min(answer, solve());
            }
        }
        printf("%.16lf\n", answer);
    }
    else if (n == m)
    {
        memset(choose, true, sizeof(choose));
        printf("%.16lf\n", solve());
    }
    else
    {
        printf("I don't know.\n");
    }
    return 0;
}